<?php

class Person{



    private $name;
    private $age;
    private $sex;

    //给无法访问的属性赋值的时候自动执行
    public function __set($k, $v)
    {
        echo $k.','.$v.PHP_EOL;
        $this->$k = $v;
    }

    //获取无法访问的属性值的时候自动调用
    public function __get($k)
    {
        echo $k.PHP_EOL;
        return $this->$k;
    }

    //判断无法访问的属性是否存在自动调用
    public function __isset($k)
    {
        return isset($this->$k);
    }

    //销毁无法访问的属性的时候自动执行
    public function __unset($k)
    {
        unset($this->$k);
    }
}

$p = new Person();

//给属性赋值
$p->name = "tom";
$p->sex = "男";
$p->age = 11;

//获取属性
echo $p->name;
echo PHP_EOL;

//判断私有属性是否存在
var_dump(isset($p->name)); //true

//销毁私有属性
unset($p->name);


